// 剪切板变量
let secret_code = ''
Page({
  data: {
    countDownVisible: true,
    mobile: '',
    code: ''
  },

  countDownChange(ev) {
    this.setData({
      timeData: ev.detail,
      countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0,
    })
  },

  // 获取验证码
  async getCode() {
    // 验证手机号格式
    if (!this.validateMobile()) {
      return
    }
    // 发送请求获取验证码，解构数据
    const {
      code,
      data,
      message
    } = await wx.http.get(`/code?mobile=${this.data.mobile.trim()}`)
    // code非10000失败
    if (code !== 10000) {
      wx.utils.toast(message || '获取验证码失败')
      return
    }
    wx.utils.toast('获取验证码成功')
    // 发送请求后控制倒计时开始
    this.setData({
      countDownVisible: true
    })
    // 验证码数据赋值剪切板变量
    secret_code = data.code
  },
  copyCode() {
    wx.setClipboardData({
      data: secret_code,
    })
  },
  // 校验
  validateMobile() {
    // 宽松验证规则
    const reg = /1[3-9][0-9]{9}/
    // 正则验证
    const valid = reg.test(this.data.mobile.trim())
    // 验证未通过
    if (!valid) {
      wx.utils.toast('请填写正确的手机号')
      return false
    }
    // 返回验证结果
    return true
  },
  // 登录验证
  validateCode() {
    const pattern = /^\d{6}$/
    if (!pattern.test(this.data.code)) {
      wx.utils.toast('验证码格式错误')
      return false
    }
    return true
  },

  onLoad(options) {
    this.route = options.route
  },
  // 登录请求
  async login() {
    // 验证手机号和验证码

    if (!this.validateMobile() || !this.validateCode()) return
    // wx.utils.toast('验证成功')
    // 发送登录请求
    const {
      code,
      message,
      data
    } = await wx.http.post('/login', {
      mobile: this.data.mobile,
      code: this.data.code
    })
    if (code !== 10000) {
      wx.utils.toast(message || '登录请求失败')
      return
    }
    // 获取数据，存储token
    // app全局变量存储
    getApp().setToken(data.token, data.refreshToken)
    // 登陆成功后返回原页面
    wx.navigateTo({
      url: this.route && 'pages/index/index' ,
    })
  }
})